//导入jwt
const jwt = require('jsonwebtoken');

const UserModel = require('../models/UserModel');


//读取配置项
const {secret} = require('../config/config');
module.exports = (req, res, next) => {

    //获取token
    let token = req.get('token');
    //判断
    if (!token) {
      return res.json({
        code: '2003',
        msg: 'token缺失',
        data: null
      });
    }
  
    //校验token
    jwt.verify(token, secret, (err, data) => {
      //检测token是否正确
      if (err) {
        return res.json({
          code: '2004',
          msg: 'token校验失败',
          data: null
        });
      }

      //保存用户信息
      req.user = data;

      //如果token正确，则检测是否过期
      UserModel.findOne({username:data.username}).then((data)=>{
        //如果没有过期，继续执行
        if(data.exp && data.exp >= new Date().getTime() / 1000){
          next();
        }else{
          return res.json({
            code: '2005',
            msg: '登录状态过期',
            data: null
          });
        }

      }).catch((err)=>{
        return res.json({
          code: '2006',
          msg: '登录校验失败',
          data: null
        });
      });

  
      //如果token校验成功，则继续执行
      // next();
    });
  
}